/**======================================

* 兼容:在火狐,IE6-10,谷歌,360测试OK
author:yanlong
=======================================**/

//定义匿名函数并立即执行
(function($){
    $.fn.delayLoading = function(options)
    {

        //定义需要的参数的初始值,合并options对象然后赋值到变量set,如果存在相同的值那么进行覆盖
        var init = $.extend({speed:"data-s",direction:""},options || {});
        var cache = [];

        //为所有指定class="lazyloading"的元素执行这个匿名函数
        $(this).each(function()
        {
            var nodeName = this.nodeName.toLowerCase();//返回节点的名称,并且转换为小写
			if(init.speed){
				var speed = $(this).attr(init.speed);//获取options参数的值
			}else{
				var speed = 0;
			}
            //获取每个元素的信息,存入临时对象data里面,然后插入到cache对象
            var data = {
                obj : $(this),//当前选中的元素
				speed : speed, // 出现的时间
                tag : nodeName//节点的名字
            }
            cache.push(data);//向cache数组的末尾添加元素,并返回新的长度
        });

        var lazyLoading = function()
        {
            //用each函数遍历cache数组
            $.each(cache,function(key, val)
            {
                var obj = val.obj;
				var speed = val.speed;  // 得到出现的时间
                var tag = val.tag;
				
                if(obj)
                {
					
                    var winHeight = $(window).height();//当前窗口高度
                    var scrolltop = $(window).scrollTop();//滚动条偏移高度
                    var imgTop = obj.offset().top;//图片元素在当前视口的相对偏移
                    //判断是否在当前窗口内(关键)
					//console.log(speed);
                    if((imgTop-scrolltop) > 0 && (imgTop-scrolltop) < winHeight)
                    {
                        //给src属性赋值
					var res = obj.css("left");
					var restop = obj.css("top");
					 if(init.direction=="top"){
                          obj.css("top","1500px"); 
						  obj.delay(speed).animate({top:restop},{duration:1500,easing:'easeInOutExpo'} );
                     }else{
						if(parseInt(res)>400){
							obj.css("left","2000px");
						}else{
							obj.css("left","-1000px");
						}
						obj.delay(speed).animate({left:res},{duration:1500,easing:'easeInOutExpo'} );		
					}
                    val.obj = null;//清空,不清空会重复负责,重复请求
                    }
                }
            });
        }
        //加载后立即执行
        lazyLoading();
        //添加滚动事件
        $(window).bind("scroll",lazyLoading);
    };
})(jQuery);